# 因为遍历的时候用的是prev，相当于用了一个临时指针，
# 而head始终都是指向开头的那个节点，改变了链表结构之后，
# 我们需要返回开头的节点才能返回整个链表。
class Solution:
    def removeDuplicateNodes(self, head: ListNode) -> ListNode:
        vals = set()
        prev = ListNode(0)
        # 浅拷贝
        prev.next = head
        while prev.next:
            if prev.next.val in vals:
                prev.next = prev.next.next
            else:
                vals.add(prev.next.val)
                prev = prev.next
        # 返回头指针
        return head